package net.oschina.jms.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * @Author: AiBinXiao
 * @Description: 主题模式：生产者，向消息中间件提供消息的
 * @Date: 2017/11/1 10:45
 */

public class AppProducer {
    private static final String url = "tcp://127.0.0.1:61616"; // 端口61616是activemq默认的端口
    private static final String topicName = "topic-test"; // 创建主题的名字

    public static void main(String[] args) throws JMSException {
        // 1.创建ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        // 2.创建Connection
        Connection connection = connectionFactory.createConnection();

        // 3.启动连接
        connection.start();

        // 4.创建会话
        // 参数1，是否在事务中处理，参数2，使用的应答模式，使用自动应答
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        // 5.创建一个目标
        Destination destination = session.createTopic(topicName);

        // 6.创建一个生产者，并向目标发送消息
        MessageProducer producer = session.createProducer(destination);

        // 我们循环的给目标发送消息
        for (int i=0; i<100; i++) {
            // 7.创建消息
            TextMessage textMessage = session.createTextMessage("test" + i);
            // 8.发布消息
            producer.send(destination, textMessage);
            System.out.println("发送消息：" + textMessage.getText());
        }
        // 9.关闭连接，不然会导致连接被耗尽的情况，就无法链接到ActiveMQ了
        connection.close();
    }
}
